import {ServerResponse} from "http";
import {middleWareFunction, parsedRequest} from "./interface";

/**
 * 一个句柄的中间件队列处理器：当服务器被请求某个句柄时，由此函数处理这个句柄下的所有中间件的队列运作
 * @param req 请求：扩展了 Node 原生的 incomingMessage
 * @param res 回复 ： Node 原生的 ServerResponse
 * @param handles 某个句柄的中间件队列
 */
function processMiddlewares(req: parsedRequest, res: ServerResponse, handles: Array<middleWareFunction>): void
{
    let i = 0;
    function callNext()
    {
        let crt = handles[i];
        crt(req, res, () =>
        {
            if (i < handles.length - 1)
            {
                i++;
                callNext();
            }
        });
    }
    callNext();
}
export {processMiddlewares}